package com.ft.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ft.domain.User;
import com.ft.dao.UserDao;
import com.ft.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author ft
 * @since 2022-06-01
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserService {
    @Autowired
    UserDao userdao;
    /**
     *登录校验
     */
    @Override
    public User loginCheckUser(String username,String password) {
        User user = userdao.selectByUser(username, password);
        return user;
    }

    /**
     * 添加用户，如果用户名已经存在返回false
     * @param user 传入的用户对象
     * @return 0：成功，1：注册失败，2：用户名以存在
     */
    @Override
    public int addUser(User user) {
        String s = userdao.selectByName(user.getName());
        if (s == null) {
            int i = userdao.addUser(user);
            if (i > 0) {
                return 0;
            }
            return 1;
        }else {
            return 2;
        }
    }

    /**
     * 修改用户
     * @param user 传入修改的用户对象
     * @return 返回受影响的行数
     */
    @Override
    public int updateUser(User user) {
        int i = userdao.updateUser(user);
        return i;
    }
    @Override
    public List<User> selectAll(){
        List<User>  userList = userdao.selectAll();
        return userList;
    }
    /**
     *根据传入的用户id对用户做逻辑删除
     * @param id 要删除用户的id
     * @return 返回受影响的结果
     */
    @Override
    public int deleteUser(int id) {
        int i = userdao.deleteUser(id);
        return i;
    }
    /**
     * 查询已经逻辑删除的用户
     * @return 返回查询的list集合
     */
    @Override
    public List<User> selectByState() {
        List<User> users = userdao.selectByState();
        return users;
    }

    /**
     * 根据传入的页码查询页面的数据
     * @param page 要查询的第几页的页码
     * @return 返回查询的List结果集
     */
    @Override
    public List<User> selectDataByPage(int page) {
        //使用mybatis-puls分页功能
        IPage page1 = new Page(page,4);
        userdao.selectPage(page1,null);
        //返回当前页面的数据
        System.out.println(page1.getRecords());
        return page1.getRecords();
    }
}
